home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / plugin.jar / sun / plugin / PluginURLJarFileCallBack$1.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  3.4 KB  |  122 lines

  1. package sun.plugin;
  2.  
  3. import com.sun.deploy.cache.DeployCacheHandler;
  4. import com.sun.deploy.config.Config;
  5. import com.sun.deploy.net.DownloadEngine;
  6. import java.io.BufferedInputStream;
  7. import java.io.BufferedOutputStream;
  8. import java.io.File;
  9. import java.io.FileOutputStream;
  10. import java.io.IOException;
  11. import java.io.InputStream;
  12. import java.io.OutputStream;
  13. import java.net.URL;
  14. import java.net.URLConnection;
  15. import java.security.PrivilegedExceptionAction;
  16. import java.util.Enumeration;
  17. import java.util.jar.JarFile;
  18. import java.util.zip.ZipEntry;
  19. import sun.awt.AppContext;
  20.  
  21. final class PluginURLJarFileCallBack$1 implements PrivilegedExceptionAction {
  22.    // $FF: synthetic field
  23.    final URL val$url;
  24.    // $FF: synthetic field
  25.    final URLConnection val$conn;
  26.    // $FF: synthetic field
  27.    final PluginURLJarFileCallBack this$0;
  28.  
  29.    PluginURLJarFileCallBack$1(PluginURLJarFileCallBack var1, URL var2, URLConnection var3) {
  30.       this.this$0 = var1;
  31.       this.val$url = var2;
  32.       this.val$conn = var3;
  33.    }
  34.  
  35.    public Object run() throws IOException {
  36.       URL var1 = new URL(this.val$url.getProtocol(), this.val$url.getHost(), this.val$url.getPort(), this.val$url.getPath());
  37.       String var2 = (String)AppContext.getAppContext().get(Config.getAppContextKeyPrefix() + var1.toString());
  38.       this.val$conn.setRequestProperty("accept-encoding", "pack200-gzip, gzip");
  39.       if (DeployCacheHandler.isResourceCacheable(this.val$url.toString(), this.val$conn)) {
  40.          BufferedInputStream var3 = null;
  41.  
  42.          try {
  43.             byte[] var4 = new byte[PluginURLJarFileCallBack.access$000()];
  44.             var3 = new BufferedInputStream(this.val$conn.getInputStream());
  45.  
  46.             while(((InputStream)var3).read(var4) != -1) {
  47.             }
  48.          } finally {
  49.             if (var3 != null) {
  50.                ((InputStream)var3).close();
  51.             }
  52.  
  53.          }
  54.  
  55.          JarFile var21 = DownloadEngine.getCachedJarFile(var1, var2);
  56.          if (var21 != null) {
  57.             return var21;
  58.          }
  59.       }
  60.  
  61.       File var20 = DownloadEngine.getJarFileWithoutCache(var1, (String)null, var2, (DownloadEngine.DownloadDelegate)null);
  62.       if (!this.val$url.toString().toUpperCase().endsWith(".JARJAR")) {
  63.          return new JarFile(var20, false);
  64.       } else {
  65.          JarFile var22 = new JarFile(var20, false);
  66.          Enumeration var5 = var22.entries();
  67.          ZipEntry var6 = null;
  68.          int var7 = 0;
  69.  
  70.          while(var5.hasMoreElements()) {
  71.             var6 = (ZipEntry)var5.nextElement();
  72.             if (!var6.getName().toUpperCase().startsWith("META-INF")) {
  73.                if (!var6.toString().toUpperCase().endsWith(".JAR")) {
  74.                   throw new IOException("Invalid entry in jarjar file");
  75.                }
  76.  
  77.                ++var7;
  78.                if (var7 > 1) {
  79.                   break;
  80.                }
  81.             }
  82.          }
  83.  
  84.          if (var7 > 1) {
  85.             throw new IOException("Multiple JAR files inside JARJAR file");
  86.          } else {
  87.             BufferedInputStream var8 = null;
  88.             OutputStream var9 = null;
  89.  
  90.             try {
  91.                byte[] var10 = new byte[PluginURLJarFileCallBack.access$000()];
  92.                int var11 = 0;
  93.                File var12 = File.createTempFile("jar_cache", (String)null);
  94.                var12.deleteOnExit();
  95.                var8 = new BufferedInputStream(var22.getInputStream(var6));
  96.                var9 = new BufferedOutputStream(new FileOutputStream(var12));
  97.                var11 = (boolean)0;
  98.  
  99.                while((var11 = ((InputStream)var8).read(var10)) != -1) {
  100.                   var9.write(var10, 0, var11);
  101.                }
  102.  
  103.                var9.close();
  104.                var9 = null;
  105.                var22 = new JarFile(var12, false);
  106.             } finally {
  107.                if (var8 != null) {
  108.                   ((InputStream)var8).close();
  109.                }
  110.  
  111.                if (var9 != null) {
  112.                   var9.close();
  113.                }
  114.  
  115.             }
  116.  
  117.             return var22;
  118.          }
  119.       }
  120.    }
  121. }
  122.